Automated testing of application programs from an application program ecosystem

ABSTRACT

Automated testing of application programs from an application program ecosystem is performed. As one example, a server system is disclosed that includes an application program management service residing at and executable by the server system. The application program management service may be configured to identify one or more networked components of a target application program of a plurality of application programs accessible by clients at an application program data store via a communication network. The application program management service may be configured to test the one or more networked components of the target application program, and output an indication of a result of the test of the target application program.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to and is a continuation of U.S.patent application Ser. No. 13/092,968, titled AUTOMATED TESTING OFAPPLICATION PROGRAMS FROM AN APPLICATION PROGRAM ECOSYSTEM, filed Apr.24, 2011, and issued as U.S. Pat. No. 8,850,398, the entire contents ofwhich are incorporated herein by reference in their entirety for allpurposes.

BACKGROUND

Computer software in the form of application programs may be distributedto consumers through online storefronts or libraries that are accessibleby consumers via communication networks such as the Internet. Someapplication programs request data from information services that run onremote servers to provide functionality. However, these applicationprograms may suffer degraded operation if these information services areno longer responsive to the application programs or no longer providesuitable responses to requests made by the application programs. Forexample, a software developer may discontinue support for an applicationprogram some time after the application program has been made availableto consumers through online storefronts or libraries. Following suchdiscontinuation of support, consumers that have purchased theseapplication programs, may find that the application programs suffer fromdegraded operation. Further, other consumers may unknowingly purchase anapplication for which support has been discontinued, only to find thatit does not work properly.

SUMMARY

Implementations for automated testing of application programs from anapplication program ecosystem are disclosed. As one example, a serversystem is disclosed that includes an application program managementservice executed at the server system. The application programmanagement service may be configured to identify one or more networkedcomponents of a target application program of a plurality of applicationprograms accessible at an application program data store by clients viaa communication network. The application program management service maybe configured to test the one or more networked components of the targetapplication program, and output an indication of a result of the test ofthe target application program. Claimed subject matter, however, is notlimited by this summary as other implementations may be disclosed by thefollowing written description and associated drawings.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a schematic diagram depicting an example networkcommunications system according to one disclosed embodiment.

FIG. 2 is a schematic diagram depicting an example application programmanagement service.

FIG. 3 is a flow diagram depicting an example application programtesting method according to one disclosed embodiment.

FIG. 4 is a flow diagram depicting another example application programtesting method according to one disclosed embodiment.

FIG. 5 is a flow diagram depicting yet another example applicationprogram testing method according to one disclosed embodiment.

FIG. 6 is a schematic diagram depicting an example graphical userinterface of a browser program according to one disclosed embodiment.

DETAILED DESCRIPTION

Automated testing of application programs from an application programecosystem is disclosed in a variety of contexts. An application programmanagement service of a server system may evaluate the health ofapplication programs of an application program data store. Theapplication program data store may be exposed to clients of acommunication network via an online storefront or library, for example.In at least some implementations, the application program managementservice may execute an instance of a target application program at atest bench that simulates a client. In other implementations, theapplication program management service may utilize test result dataand/or test parameter data obtained from one or more clients of thecommunication network to evaluate the health of the applicationprograms. Implementations for obtaining test result data and/or testparameter data from clients are disclosed. Application program healthvalues may be associated with application programs to enable filteringof the application programs and publication of the application programhealth values.

FIG. 1 is a schematic diagram depicting an example networkcommunications system 100 according to one disclosed embodiment. Networkcommunications system 100 may include a server system 110. Server system110 may include one or more server devices for executing an applicationprogram management service 112. Application program management service112 may be implemented as instructions 124 stored at storage device 126(e.g., mass storage, memory, etc.) that are executable by a processor128 of server system 110. The term ‘server system’ is used herein todenote both individual server implementations and multiple serverimplementations where functional aspects of server system 110 may bedistributed across any suitable number of servers connected viacommunication network 118.

Application program management service 112 may be configured to identifyone or more networked components of a target application program. Atarget application program may be one of a plurality of applicationprograms 114 accessible by clients at application program data store 116of server system 110 or application program data store 142 of remoteserver system via communication network 118. Communication network 118may comprise one or more of a local area network or a wide area networksuch as the Internet, for example. An example client 120 is depicted inFIG. 1. Client 120 refers to a client device such as a mobile device,personal computer, or other suitable electronic device that may beoperated by a human user.

In at least some implementations, the one or more networked componentsof the target application program may include one or more respectivenetwork resources. A network resource may comprise any suitable elementof information that may be accessed by an application program over acommunication network. Each network resource may be referenced by thetarget application program via a corresponding hyperlink (e.g.,referring to a network address of the network resource) or anapplication programming interface. For example, the one or morenetworked components of a target application program may refer to one ormore network resources 132 residing at an application services server130. An instance of an application program that is executed at client120 or at server system 110 may request network resources 132, and mayreceive responses to such requests from applications services server130. An application program that is unable to obtain suitable access tonetwork resources may suffer degraded operation or performance due tothe unavailability of the network resources.

Application program management service 112 may be configured to test theone or more networked components of a target application program, andassociate an indication of a result of the test with the targetapplication program, for example, at application program data store 116or application program data store 142. In FIG. 1, the result of the testmay correspond to the depicted test result data 122.

In at least some implementations, application program management service112 may be configured to identify the one or more networked componentsof the target application program by executing an instance of the targetapplication program. For example, application program management service112 may execute an instance of a target application program, and maytraverse or attempt to traverse each hyperlink (e.g., of a graphicaluser interface) or application programming interface of the targetapplication in an attempt to access respective networked components ofthe target application program. Application program management service112 may be configured to send requests to each networked component ofthe target application program, and monitor response traffic for successmessages (e.g., an HTTP 200 OK message) or error messages (e.g., an HTTP404 Not Found message) received in response to such requests.

Application program management service 112 may be configured to output,for example, by presenting an indication of a result of the test, ortransmitting the indication of the result of the test to one or moreclients via communication network 118 for presentation at the one ormore clients, or otherwise publishing the indication of the result ofthe test to a network location accessible by one or more clients viacommunication network 118. The sharing of the results of the tests amongclients may enable consumers to make more informed decisions regardingpurchasing or acquiring such application programs, and may enableadministrators of online storefronts or libraries to exclude applicationprograms that have failed the tests.

In at least some implementations, application program management service112 may be configured to filter a target application program relative tothe plurality of application programs 114 of application program datastore 116 based, at least in part, on the indication of the result ofthe test associated with the target application program. As one example,application program management service 112 may be configured to filterthe plurality of application programs 114 of the application programdata store 116 to obtain a subset of acceptable application programsfrom the plurality of application programs of the application programdata store. The acceptable application programs may have at least athreshold ratio of success responses relative to error responses.Application program management service 112 may be configured to excludeone or more application programs not included in the subset ofacceptable application programs from being accessed by requestingclients over the communication network, or may otherwise reduceavailability of the application programs not included in the subset ofacceptable application programs.

In at least some implementations, application program management service112 may be configured to test the networked component of the targetapplication program by applying an automated test framework of a testharness program to the target application program, and may be configuredto receive the result of the test from the test harness program. Thetest harness program may provide a test bench that simulates a client ofcommunication network 118. However, in other implementations,application program management service 112 may be configured to deploy atest harness program such as deployable testing module 134 to a clienthaving an instance of the target application program via thecommunication network to cause the client to execute the instance of thetarget application program, identify the networked component of thetarget application program, and test the networked component of thetarget application program.

For example, application program management service 112 is depicted withdeployable testing module 134, and client 120 is depicted with testingmodule 136 that may correspond to an instance of deployable testingmodule 134. In this implementation, the test harness program (e.g.,testing module 136) may be executable by client 120 to send a responsefrom client 120 to server system 110 via communication network 118 thatincludes the indication of the result of the test performed by theclient. In at least some implementations, testing module 136 may formpart of operating system 150 or browser program 180 of client 120. Aspreviously described, testing module 136 may be deployed to client 120by server system 110 in at least some implementations. As one example,testing module 136 may be provided as a plug-in, or other suitable setof instructions that are executable by client 120. A processor 186 ofclient 120 may execute instructions 182 held in storage device 184,including testing module 136 and application programs 138.

In at least some implementations, application program management service112 may be configured to, for each application program of the pluralityof application programs 114 including at least the target applicationprogram: identify the one or more networked components of theapplication program by executing an instance of the application program;test the one or more networked components of the application program;and associate an indication of a result of the test with the applicationprogram (e.g., as test result data 122). In at least someimplementations, application program management service 112 may beconfigured to rank the plurality of application programs 114 based, atleast in part, on the respective indication associated with eachapplication program of the plurality of application programs 114. Therank of the plurality of application programs may be presented to a uservia browser program 180 of client 120, for example.

In at least some implementations, test result data may be obtained fromclients. For example, testing module 136 of client 120 may be configuredto monitor response traffic received at client 120 via communicationnetwork 118 that are responsive to respective requests made by one ormore application programs 138 executed at client 120. Testing module 136may be configured to, for a given response message of the responsetraffic, associate an indication of whether the response messageincludes an error message or a success message with an applicationprogram identifier corresponding to a target application program of theplurality of application programs. Testing module 136 may be configuredto send a reporting message from client 120 to server system 110 viacommunication network 118. The reporting message may include anapplication program identifier for the target application program, andmay include the indication of whether the response message includes anerror message or a success message. In at least some implementations,the reporting message may further include an indication or identifier ofa networked component corresponding to the response message. Thenetworked component may include a network resource referenced by thetarget application program via a corresponding hyperlink or anapplication programming interface, for example.

In at least some implementations, testing module 136 may be configuredto send the reporting message from client 120 to server system 110 viacommunication network 118 responsive to client 120 registering with anapplication program storefront or library provided by the server system110. As one example, application program management service 112 mayrequire that testing module 136 provide test result data to serversystem 110 in order to gain access to an online storefront or libraryfor application program data store 116, or may provide increasedfunctionality to clients within the online storefront or library inresponse to the clients providing test result data to server system 110.

Application program management service 112 may be configured to receivethe reporting message from client 120 at server system 110. Test resultdata of the reporting message may be stored as server system 110 asdepicted by test result data 122. In at least some implementations,application program management service 112 may be configured to combinethe indication of whether the response message includes an error messageor a success message with other indications associated with theapplication program identifier received from client 120 or other clientsvia communication network 118 to obtain a combined application programhealth value for the target application program corresponding to theapplication program identifier. Application program management service112 may be configured to present an indication of the combinedapplication program health value, or transmit the indication of thecombined application program health value from server system 110 to oneor more clients (e.g., another client) via communication network 118 forpresentation, or publish the indication of the combined applicationprogram health value to a network location accessible by one or moreclients (e.g., one or more other clients) via communication network 118.The sharing of application program health values with other clients mayenable users to make more informed decisions regarding purchasing oracquiring application programs.

In at least some implementations, testing module 136 may be configuredto combine at client 120, the indication of whether the response messageincludes an error message or a success message with one or more otherindications associated with the application program identifier ofwhether one or more other response messages of the response trafficinclude an error message or success message. In these implementations,testing module 136 may be configured to send the reporting message fromclient 120 to server system 110 via communication network 118 by sendingthe combination of the indication and the one or more other indicationsfrom client 120 to server system 110 via communication network 118.

In at least some implementations, test result data and/or test parameterdata may be obtained from clients. Test parameter data may enable serversystem 110 to independently obtain test result data for a targetapplication program residing at a client. For example, testing module136 may be configured to identify one or more networked components ofeach of a plurality of application programs residing at client 120. Eachnetworked component may have a corresponding network address and testingcode. The testing code may be obtained by testing module 136 fromnetwork resources 132 of application services server 130 viacommunication network 118 or may be generated by testing module 136 frominformation contained within the target application program.

Testing module 136 may be configured to send a test parameter messagecontaining test parameter data from client 120 to server system 110 viacommunication network 118. The test parameter message may include one ormore network addresses and one or more testing codes corresponding tothe one or more networked components of a target application program ofthe plurality of application programs 138, and may further include anapplication program identifier for the target application program. Anexample of test parameter data received from client 120 is depicted atserver system 110 as test parameter data 152.

In at least some implementations, testing module 136 may be configuredto send a test parameter message from client 120 to server system 110via communication network 118 responsive to client 120 registering withan application program storefront or library provided by the serversystem 110. As one example, application program management service 112may require that testing module 136 provide a test parameter data toserver system 110 in order to gain access to an online storefront orlibrary for application program data store 116, or may provide increasedfunctionality to clients within the online storefront or library inresponse to the clients providing test parameter data to server system110.

Application program management service 112 may be configured to receivethe test parameter message at server system 110 via communicationnetwork 118. Application program management service 112 may beconfigured to send one or more request messages including the one ormore testing codes from server system 110 via communication network 118to one or more network addresses corresponding to the one or morenetworked components. For example, application program managementservice 112 may be configured to send one or more testing codes tonetwork resources 132 of application services server 130. Server system110 may simulate a client requesting network resources for a targetapplication. Application program management service 112 may beconfigured to monitor response traffic received at server system 110 viacommunication network 118 responsive to the one or more requestmessages. Application program management service 112 may be configuredto, for a response message of the response traffic, associate anindication of whether the response message includes a success message oran error message with the application program identifier for the targetapplication program.

As previously described, application program management service 112 maybe configured to combine two or more indications of whether responsemessages include error messages or success messages to obtain a combinedapplication program health value for the target application programcorresponding to the application program identifier. Application programmanagement service 112 may be configured to filter the targetapplication program relative to other application programs based, atleast in part, on the combined application program health value aspreviously described. Application program management service 112 may beconfigured to present an indication of the combined application programhealth value, or transmit the indication of the combined applicationprogram health value from server system 110 to another client viacommunication network 118 for presentation at the another client, orpublish the indication of the combined application program health valueto a network location accessible by one or more other clients viacommunication network 118. Again, the sharing of application programhealth values with other clients may enable users to make more informeddecisions regarding purchasing or acquiring application programs.Application program management service 112 may be configured toperiodically test networked components of a target application programaccording to any suitable testing schedule.

FIG. 2 is a schematic diagram depicting an example application programmanagement service 200. Application program management service 200 is anon-limiting example of previously described application programmanagement service 112 of FIG. 1. Application program management service200 may include one or more of an application program delivery module210, an application program browser module 212, and an applicationprogram health identification module 214.

Application program browser module 212 may be configured to exposeinformation associated with the plurality of application programs of anapplication program data store to browser programs (e.g., browserprogram 180) residing at the clients. For example, a user may operate abrowser program of a client to request information relating to anapplication program, or to request purchase or download of anapplication program via application program browser module 212.

Application program delivery module 210 may be configured to receive andrespond to requests for a plurality of application programs of anapplication program data store (e.g., application program data store116) from a plurality of clients via a communication network. Forexample, application program browser module 212 may be configured topass requests for an application program to application program deliverymodule 210 once a client has purchased the application program.Application program delivery module 210 may be configured to send aninstance of the application program to the client via a communicationnetwork.

Application program health identification module 214 may be configuredto identify the one or more networked components of a target applicationprogram, test the one or more networked components, and associate theindication of a result of the test with the target application programat the application program data store accessible by the clients via thecommunication network as previously described. Application programhealth indication module 214 may be further configured to obtain testparameter data and/or test result data from clients as previouslydescribed.

FIG. 3 is a flow diagram depicting an example application programtesting method 300 according to one disclosed embodiment. Method 300 maybe implemented by a server system without necessarily requiring that theserver system receive test result data or test parameter data fromclients. By contrast, methods 400 and 500 of FIGS. 4 and 5 may beimplemented by a server system that receives test result data or testparameter data from clients via a communication network.

At 310, the method may include identifying one or more networkedcomponents of a target application program. For example, an instance ofthe target application program may be executed (e.g., by an applicationprogram health identification module of the server system) to identifythe one or more networked components of the target application program.As previously described, a networked component may include a networkresource referenced by the target application program via acorresponding hyperlink or an application programming interface aspreviously described with reference to FIG. 1.

At 312, the method may include testing the one or more networkedcomponents of the target application program. For example, the one ormore networked components may be tested by sending a request message toeach networked component of the target application and monitoringresponse traffic to identify whether a response message received from anetworked component includes a success message (e.g., an HTTP 200 OKmessage) or an error message (e.g., an HTTP 404 Not Found) responsive tothe request message. A response message may be received from eachnetworked component in some scenarios. In at least some implementations,testing the one or more networked components may include applying anautomated test framework of a test harness program to the targetapplication program, and receiving the result from the test harnessprogram.

In at least some implementations, a result of a test of a targetapplication program may comprise one or more values corresponding to theresponse message received from each of the one or more networkedcomponents of the target application program. For example, a targetapplication program that includes seven networked components may have atest result that comprises seven values. Each value of the test resultmay indicate whether a response message that was received in response toa request for a networked element of the target application programincluded a success message or an error message. Two or more values of atest result may be combined in any suitable manner to provide a testresult having a combined value that is indicative of the individualvalues of the networked components that were tested.

At 314, the method may include associating an indication of the resultof the test with the target application program. For example, theindication of the result of the test may be stored in a data storeassociated with an identifier of the target application program. Anindication of a result of a test of a target application program may bereferred to as an application program health value.

At 316, the method may include combining the result of the test with oneor more other results of one or more other tests performed for thetarget application program. For example, the method at 312 may beperiodically performed to test the one or more networked components ofthe target application program according to a testing schedule tomeasure the health of the target application program over time. Acombination of two or more results of two or more tests performed for atarget application program may be referred to herein as a combinedapplication program health value. Two or more test results may becombined in any suitable manner utilizing the same or differentweightings among the combined test results. As one example, a combinedapplication program health value may comprise an average or median of anumber of individual test results for the target application program. Asanother example, more recently obtained test results may be weightedmore than less recently obtained test results. The combined applicationprogram health value may be associated with target application program,for example, as previously described with reference to the method at 314for an individual test result.

At 318, the method may include filtering the target application programamong a plurality of application programs based, at least in part, onthe indication of the result of the test associated with the targetapplication program. Each application program may have a respectiveindication of a result of a test (e.g., an application program healthvalue) or a combined application program health value for theapplication program.

At 320, the method may include outputting the indication of the resultof the test of the target application program. Outputting the indicationof the result of the test may include presenting the indication of theresult of the test, or transmitting the indication of the result of thetest to a client via a communication network for presentation at theclient, or publishing the indication of the result of the test to anetwork location accessible by one or more clients via a communicationnetwork. The sharing of test result data among clients may enable usersto make more informed decisions regarding purchasing or acquiring anapplication program.

FIG. 4 is a flow diagram depicting another example application programtesting method 400 according to one disclosed embodiment. Method 400 maybe performed in part by a client to obtain test result data on behalf ofa server system as described, for example, at operations 410-414. Theserver system may utilize the test result data obtained from the clientin a number of ways as described, for example, by operations 416-422.

At 410, the method may include monitoring response traffic received at aclient via a communication network for respective requests made tonetworked components of a plurality of application programs executed atthe client. At 412, the method may include, for a response message ofthe response traffic, associating an indication of whether the responsemessage includes an error message or a success message with anapplication program identifier corresponding to a target applicationprogram of the plurality of application programs.

The indication of whether the response message includes an error messageor a success message may be referred to as the test result orapplication program health value in the context of method 400. Aspreviously described, a target application program may have any suitablenumber of networked components. In at least some implementations, thereporting message may further include an indication of a networkedcomponent corresponding to the response message and/or an applicationprogram identifier for the application program of the networkedcomponent. In at least some implementations, sending the reportingmessage from the client to the server system at operation 412 may beperformed by the client responsive to the client registering with anapplication program storefront or library provided by the server system.

At 414, the method may include, sending a reporting message from theclient to a server system via the communication network. The reportingmessage may include the application program identifier and theindication of whether the response message includes an error message ora success message. In at least some implementations, the method at theclient may further include combining the indication of whether theresponse message includes an error message or a success message with oneor more other indications associated with the application programidentifier of whether one or more other response messages of theresponse traffic include an error message or success message. In thisimplementation, the method at 414 may include sending the reportingmessage from the client to the server system via the communicationnetwork that includes the combination of the indication and the one ormore other indications.

At 416, the method may include, receiving the reporting message at theserver system. At 418, the method may include, combining the indicationof whether the response message includes an error message or a successmessage with other indications associated with the application programidentifier received from the client or other clients devices via thecommunication network to obtain a combined application program healthvalue for the target application program corresponding to theapplication program identifier. At 420, the method may include filteringthe target application program relative to the plurality of applicationprograms of the application program data store based, at least in part,on the combined application program health value for the targetapplication program. At 422, the method may include, outputting theindication of the combined application program health value. Forexample, outputting the indication may include presenting the indicationof the combined application program health value, or transmitting theindication of the combined application program health value from theserver system to another client for presentation at the another client,or publishing the indication of the combined application program healthvalue to a network location accessible by one or more other clients viathe communication network.

FIG. 5 is a flow diagram depicting yet another example applicationprogram testing method 500 according to one disclosed embodiment. Method500 may be performed in part by, for example, a client to obtain testparameter data on behalf of a server system as described, for example,at operations 510-512. The server system may utilize the test resultdata obtained from the client in a number of ways as described, forexample, by operations 514-520.

At 510, the method may include identifying one or more networkedcomponents of each of a plurality of application programs residing at aclient. Each networked component may have a corresponding networkaddress and testing code, and each application program may have one ormore networked components. In at least some implementations, a networkaddress and testing code for a networked component of a targetapplication program may be specified within or may be derived from theinstructions that comprise the target application program. In otherimplementations, the client may receive testing codes from each of thenetworked components in response to requests sent by the client to thenetwork addresses of networked components.

At 512, the method may include sending a test parameter message from theclient to a server system via a communication network. The testparameter message may include one or more network addresses, and one ormore testing codes corresponding to the one or more networked componentsof a target application program. In at least some implementations, thetest parameter message may further include an application programidentifier for the target application program.

At 514, the method may include receiving the test parameter message atthe server system via the communication network. Test parameter data ofthe test parameter message may be associated with the program indicationby the application program identifier. At 516, the method may includesending one or more request messages including the one or more testingcodes from the server system via the communication network to the one ormore network addresses corresponding to the one or more networkedcomponents. At 518, the method may include monitoring response trafficreceived at the server system via the communication network responsiveto the one or more request messages. At 520, the method may include, fora response message of the response traffic, associating an indication ofwhether the response message includes a success message or an errormessage with the application program identifier for the targetapplication program. At 522, the method may include outputting theindication of whether the response message includes a success message oran error message.

The indication of whether the response message includes a successmessage or an error message may comprise an application program healthvalue, and may be combined with other indications of other responsemessages to obtain combined application program health values aspreviously described with reference to method 400 of FIG. 4. Combinedapplication program health values may be associated with a targetapplication program. Furthermore, filtering of a target applicationprograms relative to other application programs may be performed based,at least in part, on the application program health value or a combinedapplication program health value associated with the target applicationprogram as previously described with reference to method 400. Forexample, a fail threshold may be applied to an application programhealth value or combined application health value to determine whetherthe target application program should be excluded from being madeavailable to clients of an application program data store.

FIG. 6 is a schematic diagram depicting an example graphical userinterface (GUI) 600 of a browser program according to one disclosedembodiment. As previously discussed with reference to FIG. 1, browserprogram 180 of a client may be operated by a user to request and receiveinformation associated with application programs of an applicationprogram data store. GUI 600 includes some example information that maybe associated with a plurality of application programs such as, forexample, an application program description and a respective applicationprogram health value. The application program health values presentedvia GUI 600 may include individual or combined application programhealth values obtained using one or more of the methods of FIGS. 3, 4,and 5, or combinations thereof.

GUI 600 includes a number of control elements 610 to enable a user tovary filter criteria that is applied to application programs of theapplication program data store by the browser program residing at theclient or by an application program browser module residing at theserver system that performed the testing of the application programs orat another suitable remote server system. In FIG. 6, the applied filterorders the application programs by descending health value. In thisexample, Application Program A is associated with an application programhealth value of 10 of 10. By contrast, Application Program E isassociated with an application program health value of 4 of 10, whichmay correspond, for example, to a lower ratio of success messages toerror messages than Application Program A.

A user may reorder the application programs presented via GUI 600 bychanging the filter settings (e.g., via control elements 610) that areapplied to the information by the browser program or by the applicationprogram browser module. In this example, application programs of theapplication program data store that are associated with an applicationprogram health value that is less than a threshold (e.g., 4 of 10) havebeen excluded by the browser program or by the application programbrowser module from presentation via GUI 600. A user may access excludedapplication programs, for example, by changing or removing the thresholdthat is applied via control elements 610.

In at least some implementations, the health values or other indicationsof the result of the tests conducted for each application program maynot be presented or otherwise published for the benefit of consumer typeusers. Rather, application programs meeting at least an acceptablehealth value may be presented or published for purchase, download, oraccess while application programs having an unacceptable health valuemay be excluded from purchase, download, or access by users withoutpresenting the health values associated with each application program.In either scenario, a user with knowledge of the relative health valueassociated with each application program may purchase, download, orotherwise access one or more of the application programs via GUI 600,for example, by selecting a corresponding control element. In this way,a user may discriminate among application programs within an onlinestorefront or library on the basis of the health value associated withthe application program.

It should be understood that the embodiments herein are illustrative andnot restrictive, since the scope of the invention is defined by theappended claims rather than by the description preceding them, and allchanges that fall within metes and bounds of the claims, or equivalenceof such metes and bounds thereof are therefore intended to be embracedby the claims.

1. A method for a server system, comprising: executing an instance of atarget application program to identify one or more networked componentsof the target application program, the target application program beingone of a plurality of application programs accessible at an onlinestorefront of an application program data store from which consumersdownload application programs to client devices via a communicationnetwork; testing the one or more networked components of the targetapplication program for success responses or error responses; filteringthe plurality of application programs based, at least in part, on aresult of the test to obtain a subset of acceptable application programsfrom the plurality of application programs, each of the acceptableapplication programs having at least a threshold ratio of successresponses relative to error responses; providing information to clientdevices via the communication network to cause the client devices todisplay the online storefront via a graphical user interface thatincludes a plurality of selectors to download purchase the subset ofacceptable application programs to the client devices; and excludingapplication programs that were filtered out and not included in thesubset of acceptable application programs from being available fordownload to the client devices from the online storefront.
 2. The methodof claim 1, further comprising: adjusting the threshold ratio of successresponses relative to error responses for a subject client device basedon a user input directed at one or more control elements of thegraphical user interface presented at the subject client device.
 3. Themethod of claim 2, further comprising: responsive to adjusting thethreshold ratio of success responses relative to error responses,varying a quantity of the subset of acceptable application programs fordownload to the subject client device.
 4. The method of claim 3, whereinvarying the quantity of the subset of acceptable application programsincludes increasing the quantity of the subset of acceptable applicationprograms toward the plurality of application programs accessible at theonline storefront responsive to adjusting the threshold ratio of successresponses relative to error responses that decreases the ratio based onthe user input.
 5. The method of claim 1, wherein providing informationto client devices via the communication network to cause the clientdevices to display the online storefront via the graphical userinterface includes providing a health value associated with eachapplication program of the subset of acceptable application programs,the health value based on a threshold ratio of success responsesrelative to error responses for that application program.
 6. The methodof claim 1, wherein providing information to client devices via thecommunication network to cause the client devices to display the onlinestorefront via the graphical user interface includes providing a healthvalue associated with each application program of the plurality ofapplication programs, the health value based on a threshold ratio ofsuccess responses relative to error responses for that applicationprogram.
 7. The method of claim 1, wherein excluding applicationprograms from being available for download to the client devices fromthe online storefront includes omitting the excluded applicationprograms from the graphical user interface.
 8. The method of claim 1,wherein excluding application programs from being available for downloadto the client devices from the online storefront includes omittingselectors to download the excluded application programs to the clientdevices from the graphical user interface.
 9. The method of claim 1,wherein testing the one or more networked components of the targetapplication program for success responses or error responses includes,for each networked component, traversing or attempting to traverse ahyperlink or application programming interface of the target applicationprogram in an attempt to access that networked component of the targetapplication program.
 10. The method of claim 1, further comprising:executing an instance of each application program of the plurality ofapplication programs accessible at the online storefront to identify andtest one or more networked components of each application program. 11.The method of claim 10, further comprising: periodically executing aninstance of each application program of the plurality of applicationprograms accessible at the online storefront to identify and test one ormore networked components of each application program according to atesting schedule.
 12. The method of claim 1, further comprising:periodically executing an instance of the target application program toidentify and periodically test one or more networked components of eachapplication program according to a testing schedule; and updating ahealth value associated with the target application program based on aresult of each periodic test, the health value based on a thresholdratio of success responses relative to error responses for thatapplication program for that periodic test.
 13. The method of claim 1,wherein the graphical user interface includes one or more controlelements to provide an ordered list of the plurality of applicationprograms according to an ascending or descending health value in whicheach application program of the plurality of application programs isassociated with a health value that is based on a ratio of successresponses relative to error responses for that application program. 14.A method for a server system, comprising: executing an instance of eachapplication program of a plurality of application programs accessible atan online storefront of an application program data store to identifyone or more networked components of that application program, the onlinestorefront enabling client devices to download selected applicationprograms of the plurality of application programs over a communicationnetwork; testing the one or more networked components of eachapplication program for success responses or error responses; assigninga health value to each application programs based, at least in part, ona result of the test of the one or more networked components of thatapplication program; providing information to client devices via thecommunication network to cause the client devices to display the onlinestorefront via a graphical user interface that includes the plurality ofapplication programs and the health value associated with eachapplication program of the plurality of application programs; receivinga user input directed at a control element of the graphical userinterface to filter the plurality of application programs based on thehealth value associated with each application program of the pluralityof application programs; and filtering the plurality of applicationprograms based on the health value associated with each applicationprogram at the graphical user interface responsive to the user input.15. The method of claim 14, wherein the graphical user interface furtherincludes a selector associated with each application program of theplurality of application programs, each selector selectable by a user todownload that application program to a client device over thecommunications network.
 16. The method of claim 14, wherein filteringthe plurality of application programs based on the health valueassociated with each application program further includes excludingapplication programs below a health value threshold from being availablefor download to the client devices from the online storefront.